package cn.myjerry.collection;

//public class MyLinkedList {
//	class Node {
//		private Node prev;
//		private Object obj;
//		private Node next;
//		
//		public Node () {}
//
//		public Node(Node prev, Object obj, Node next) {
//			super();
//			this.prev = prev;
//			this.obj = obj;
//			this.next = next;
//		}
//
//		/**
//		 * @return the prev
//		 */
//		public Node getPrev() {
//			return prev;
//		}
//
//		/**
//		 * @param prev the prev to set
//		 */
//		public void setPrev(Node prev) {
//			this.prev = prev;
//		}
//
//		/**
//		 * @return the obj
//		 */
//		public Object getObj() {
//			return obj;
//		}
//
//		/**
//		 * @param obj the obj to set
//		 */
//		public void setObj(Object obj) {
//			this.obj = obj;
//		}
//
//		/**
//		 * @return the next
//		 */
//		public Node getNext() {
//			return next;
//		}
//
//		/**
//		 * @param next the next to set
//		 */
//		public void setNext(Node next) {
//			this.next = next;
//		}		
//	}
//	
//	private Node first;
//	private Node last;
//	
//	private int size;
//	
//	public int size () {
//		return size;
//	}
//	
//	public void add (Object obj) {
//		Node n = new Node();
//		if(first == null){
//			n.setPrev(null);
//			n.setObj(obj);
//			n.setNext(null);
//			
//			first = n;
//			last = n;			
//		} else {
//			n.setPrev(last);
//			n.setObj(obj);
//			n.setNext(null);
//			
//			last.setNext(n);
//			
//			last = n;
//		}
//		size++;
//	}
//	
//	public void add(int index,Object obj){
//		rangeCheck(index);
//		Node n = node(index);
//		Node newNode = new Node();
//		newNode.obj = obj;
//		if(n != null){
//			Node up = n.prev;
//			up.next = newNode;
//			newNode.prev = up;
//			
//			n.prev = newNode;
//			newNode.next = n;
//			
//			size++;
//		}
//	}
//	
//	public void remove(int index){
//		Node n = null;
//		if(first != null){
//			n = first;
//			for(int i=0;i<index;i++){
//				n = n.next;
//			}
//		}
//		if(n != null){
//			Node up = n.prev;
//			Node down = n.next;
//			
//			up.next = down;
//			down.prev = up;
//			
//			size--;
//		}		
//	}
//
//	public Object get(int index) {
//		rangeCheck(index);		
//		return node(index).obj;
//	}
//
//	public void set(int index,Object obj){
//		rangeCheck(index);
//		Node n = node(index);
//		if(n != null){
//			n.obj = obj;
//		}		
//	}
//	
//	public Node node(int index){
//		Node n = null;
//		if(first != null){
//			n = first;
//			for(int i=0;i<index;i++){
//				n = n.next;
//			}
//		}
//		return n;
//	}
//	
//	public void rangeCheck(int index) {
//		if(0> index || index>=size){
//			try {
//				throw new Exception();
//			} catch (Exception e) {
//				e.printStackTrace();
//			}
//		}
//	}
//
//	public static void main(String[] args) {
//		MyLinkedList list = new MyLinkedList();
//		list.add("aaa");
//		list.add("bbb");
//		list.add("ccc");
//		//list.remove(1);
//		list.set(1,"BBB");
//		System.out.println(list.get(1));
//	}
//}

public class MyLinkedList {
	/**
	 * @author zpon
	 *
	 */
	class Node{
		private Node prev;
		private Object obj;
		private Node next;
		
		public Node() {}

		public Node(Node prev, Object obj, Node next) {
			super();
			this.prev = prev;
			this.obj = obj;
			this.next = next;
		}

		/**
		 * @return the prev
		 */
		public Node getPrev() {
			return prev;
		}

		/**
		 * @param prev the prev to set
		 */
		public void setPrev(Node prev) {
			this.prev = prev;
		}

		/**
		 * @return the obj
		 */
		public Object getObj() {
			return obj;
		}

		/**
		 * @param obj the obj to set
		 */
		public void setObj(Object obj) {
			this.obj = obj;
		}

		/**
		 * @return the next
		 */
		public Node getNext() {
			return next;
		}

		/**
		 * @param next the next to set
		 */
		public void setNext(Node next) {
			this.next = next;
		}
	}
}



